/*!
 * \file WtDtServo.h
 * \project	WonderTrader
 *
 * \author Wesley
 * \date 2020/03/30
 * 
 * \brief 数据服务接口头文件
 * 
 * \details 本文件定义了WonderTrader数据服务系统的C接口：
 *          - 提供历史数据查询服务的C语言接口
 *          - 支持K线数据和Tick数据的范围查询和数量查询
 *          - 实现跨语言调用的数据服务功能
 *          - 提供系统初始化和版本信息接口
 *          - 支持回调函数方式返回查询结果
 *          - 为外部系统提供标准化的数据访问接口
 */
#pragma once
#include "PorterDefs.h"


#ifdef __cplusplus
extern "C"
{
#endif

	/**
	 * @brief 初始化数据服务
	 * @details 根据配置文件或配置字符串初始化数据服务系统
	 * @param cfgFile 配置文件路径或配置字符串
	 * @param isFile 是否为文件路径（true=文件路径，false=配置字符串）
	 */
	EXPORT_FLAG void		initialize(WtString cfgFile, bool isFile);

	/**
	 * @brief 获取版本信息
	 * @details 返回数据服务系统的版本号字符串
	 * @return WtString 版本号字符串
	 */
	EXPORT_FLAG	WtString	get_version();

	/**
	 * @brief 按时间范围获取K线数据
	 * @details 根据指定的时间范围查询K线数据，通过回调函数返回结果
	 * @param stdCode 标准合约代码
	 * @param period K线周期（如"m1", "m5", "d1"等）
	 * @param beginTime 开始时间（时间戳）
	 * @param endTime 结束时间（时间戳）
	 * @param cb 回调函数，用于接收查询结果
	 * @return WtUInt32 查询到的K线数据条数
	 */
	EXPORT_FLAG	WtUInt32	get_bars_by_range(const char* stdCode, const char* period, WtUInt64 beginTime, WtUInt64 endTime, FuncGetBarsCallback cb);

	/**
	 * @brief 按时间范围获取Tick数据
	 * @details 根据指定的时间范围查询Tick数据，通过回调函数返回结果
	 * @param stdCode 标准合约代码
	 * @param beginTime 开始时间（时间戳）
	 * @param endTime 结束时间（时间戳）
	 * @param cb 回调函数，用于接收查询结果
	 * @return WtUInt32 查询到的Tick数据条数
	 */
	EXPORT_FLAG	WtUInt32	get_ticks_by_range(const char* stdCode, WtUInt64 beginTime, WtUInt64 endTime, FuncGetTicksCallback cb);

	/**
	 * @brief 按数量获取K线数据
	 * @details 从指定结束时间向前查询指定数量的K线数据，通过回调函数返回结果
	 * @param stdCode 标准合约代码
	 * @param period K线周期（如"m1", "m5", "d1"等）
	 * @param count 查询数量
	 * @param endTime 结束时间（时间戳）
	 * @param cb 回调函数，用于接收查询结果
	 * @return WtUInt32 查询到的K线数据条数
	 */
	EXPORT_FLAG	WtUInt32	get_bars_by_count(const char* stdCode, const char* period, WtUInt32 count, WtUInt64 endTime, FuncGetBarsCallback cb);

	/**
	 * @brief 按数量获取Tick数据
	 * @details 从指定结束时间向前查询指定数量的Tick数据，通过回调函数返回结果
	 * @param stdCode 标准合约代码
	 * @param count 查询数量
	 * @param endTime 结束时间（时间戳）
	 * @param cb 回调函数，用于接收查询结果
	 * @return WtUInt32 查询到的Tick数据条数
	 */
	EXPORT_FLAG	WtUInt32	get_ticks_by_count(const char* stdCode, WtUInt32 count, WtUInt64 endTime, FuncGetTicksCallback cb);

#ifdef __cplusplus
}
#endif